package AnalizadorSintactico;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

import AnalizadorLexico.Lexema;

public class DeclaracionDeClase {

	private Lexema acceso;
	private Lexema idClase;
	private Lexema padre;
	private BloqueDeClase bloqueClase;
	private ArrayList<Lexema> implementaciones;

	public DeclaracionDeClase(Lexema acceso, Lexema idClase, Lexema padre,
			BloqueDeClase bloqueClase, ArrayList<Lexema> implementaciones) {
		this.acceso = acceso;
		this.idClase = idClase;
		this.padre = padre;
		this.bloqueClase = bloqueClase;
		this.implementaciones = implementaciones;
	}

	public DefaultMutableTreeNode getSubArbol() {
		DefaultMutableTreeNode nodo = new DefaultMutableTreeNode(this);

		if (implementaciones != null) {
			DefaultMutableTreeNode imp = new DefaultMutableTreeNode(
					"Implementaciones:");
			for (Lexema i : implementaciones) {
				imp.add(new DefaultMutableTreeNode(i.getLexema()));
			}
			nodo.add(imp);
		}

		if (bloqueClase != null) {
			nodo.add(bloqueClase.getSubArbol());
		}

		return nodo;
	}

	@Override
	public String toString() {
		String herencia = "";
		if (padre != null) {
			herencia += padre.getLexema();
		}
		return "Clase: " + idClase.getLexema() + " -> " + herencia;
	}

	public BloqueDeClase getBloqueClase() {
		return bloqueClase;
	}

	
}
